package br.edu.ifrn.view;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import br.edu.ifrn.controller.ClasseDocumentoEJBLocal;
import br.edu.ifrn.exeption.ClasseDocumentoException;
import br.edu.ifrn.model.ClasseDocumento;


@ManagedBean
@ViewScoped
public class ClasseDocumentoMBean {
	
	private ClasseDocumento classeDocumento;
	private List<ClasseDocumento> listaClasse;
	private Map<String,String> classes;  
	
	public ClasseDocumentoMBean() {
		classeDocumento = new ClasseDocumento();
	}
	
	@EJB
	private ClasseDocumentoEJBLocal classeDocumentoEJB;
	
	@PostConstruct
    public void construct() {
		listaClasse = classeDocumentoEJB.listar();
    }
	
	public String index() {
		return "/classeDocumento/index.xhtml";
	}
	
	public Map<String, String> getMapClasseDocumento(){
		classes = new HashMap<String, String>();
		for(ClasseDocumento c : listaClasse){
			classes.put(c.getDescricao(), c.getDescricao());
		}
		return classes;
	}
	
	public List<ClasseDocumento> getListaClasseDocumento(){
		return listaClasse;
	}

	public ClasseDocumento getClasseDocumento() {
		return classeDocumento;
	}
	
	public void setClasseDocumento(ClasseDocumento classeDocumento) {
		this.classeDocumento = classeDocumento;
	}
	
	public String actionSalvar() {
		try {
			classeDocumentoEJB.salvar(classeDocumento);
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Classe de documento cadastrada com sucesso", null));
		} catch (Exception e) {
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Classe de documento não cadastrada, tente novamente", null));
		}
		
		return index();
	}
	
	public String actionRemover() {
		try {
			classeDocumentoEJB.remover(classeDocumento);
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Classe de documento removida com sucesso", null));
		} catch (ClasseDocumentoException e) {
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), null));
		}
		return index();
	}
	
	public void actionLimpar() {
		classeDocumento = new ClasseDocumento();
	}
}
